<?php

declare(strict_types=1);

namespace app\command;

use app\service\notify\SendNotifyService;
use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\input\Option;
use think\console\Output;

class Notify extends Command
{
    protected function configure()
    {
        // 指令配置
        $this->setName('notify:process')
            ->setDescription('处理通知队列和重新发送未读通知');
    }

    protected function execute(Input $input, Output $output)
    {
        try {
            // 获取 SendNotifyService 实例
            $sendNotifyService = app(SendNotifyService::class);

            $output->writeln('开始处理通知队列...');

            // 执行处理逻辑
            $sendNotifyService->process();

            // 获取并显示统计信息
            $stats = $sendNotifyService->getProcessStats();

            $output->writeln('');
            $output->writeln('处理统计信息:');
            $output->writeln('  待发送通知处理数量: ' . $stats['pending_processed']);
            $output->writeln('  需要重发的通知数量: ' . $stats['resend_should']);
            $output->writeln('  实际重发的通知数量: ' . $stats['resend_processed']);
            $output->writeln('');
            $output->writeln('通知队列处理完成');
        } catch (\Exception $e) {
            $output->writeln('处理通知队列时发生错误: ' . $e->getMessage());
            return 1; // 返回错误码
        }

        return 0; // 成功返回码
    }
}
